/**
 * 通用分享方法
 * 提供小程序分享到聊天和朋友圈的功能
 */

/**
 * 生成分享到聊天的配置
 * @param {Object} options 分享配置
 * @param {string} options.title 分享标题
 * @param {string} options.path 分享路径，默认为当前页面路径
 * @param {string} options.imageUrl 分享图片URL
 * @returns {Object} 分享配置对象
 */
export function getShareAppMessageConfig(options = {}) {
  return {
    title: options.title || '安记录丨工具舱',
    path: options.path || '/pages/record/index',
    imageUrl: options.imageUrl || '/static/share-img.png'
  }
}

/**
 * 生成分享到朋友圈的配置
 * @param {Object} options 分享配置
 * @param {string} options.title 分享标题
 * @param {string} options.query 分享查询参数
 * @param {string} options.imageUrl 分享图片URL
 * @returns {Object} 分享配置对象
 */
export function getShareTimelineConfig(options = {}) {
  return {
    title: options.title || '安记录丨工具舱',
    query: options.query || '',
    imageUrl: options.imageUrl || '/static/share-img.png'
  }
}

/**
 * 混入分享方法到页面组件
 * @param {Object} pageConfig 页面配置对象
 * @param {Object} shareOptions 分享配置选项
 * @returns {Object} 增强后的页面配置对象
 */
export function withShareMixin(pageConfig, shareOptions = {}) {
  // 保存原有的生命周期方法
  const originalOnLoad = pageConfig.onLoad
  const originalOnShareAppMessage = pageConfig.onShareAppMessage
  const originalOnShareTimeline = pageConfig.onShareTimeline

  // 增强页面配置
  return {
    ...pageConfig,
    onLoad(options) {
      // 调用原有的onLoad
      if (originalOnLoad) {
        originalOnLoad.call(this, options)
      }
    },
    onShareAppMessage(res) {
      // 如果页面有自定义分享逻辑，优先使用页面的配置
      if (originalOnShareAppMessage) {
        return originalOnShareAppMessage.call(this, res)
      }
      // 否则使用默认配置
      return getShareAppMessageConfig(shareOptions)
    },
    onShareTimeline() {
      // 如果页面有自定义朋友圈分享逻辑，优先使用页面的配置
      if (originalOnShareTimeline) {
        return originalOnShareTimeline.call(this)
      }
      // 否则使用默认配置
      return getShareTimelineConfig(shareOptions)
    }
  }
}

export default {
  getShareAppMessageConfig,
  getShareTimelineConfig,
  withShareMixin
}
